#ifndef SHAPE_H
#define SHAPE_H

#include <iostream>

using namespace std;

class Shape
{
public:
    virtual void draw()
	{
		cout << "Base class Shape" << endl;
	}
};

class Rectangle : public Shape
{
public:
    float X, Y, Width, Height;
    
    Rectangle() {X=0; Y=0; Width=0; Height=0;}
    Rectangle(float x, float y, float w, float h)
    {
        X = x;
        Y = y;
        Width = w;
        Height = h;
    }
    ~Rectangle() {}
    const Rectangle & operator=(const Rectangle &data)
    {
        X = data.X;
        Y = data.Y;
        Width = data.Width;
        Height = data.Height;
    }

    void draw()
    {
        cout << "Rectangle at (" << X << "," << Y << ") with a size of " << Width << "*" << Height << endl;
    }
};

class Circle : public Shape
{
public:
    float X, Y, Radius;

    Circle() {X=0; Y=0; Radius=0;}
    Circle(float x, float y, float r)
    {
        X=x;
        Y=y;
        Radius=r;
    }
    ~Circle() {}
    const Circle & operator=(const Circle &data)
    {
        X = data.X;
        Y = data.Y;
        Radius = data.Radius;
    }

    void draw()
    {
        cout << "Circle at (" << X << "," << Y << ") with a radius of " << Radius << endl;
    }
};

#endif SHAPE_H